import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { dirname } from 'path';

// 获取当前文件路径
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

// 需要处理的文件类型
const extensions = ['.js', '.vue', '.jsx', '.ts', '.tsx'];

// 递归遍历目录
function traverseDirectory(directory) {
  const files = fs.readdirSync(directory);
  
  files.forEach(file => {
    const filePath = path.join(directory, file);
    const stat = fs.statSync(filePath);
    
    if (stat.isDirectory() && file !== 'node_modules' && file !== '.git' && file !== 'dist') {
      traverseDirectory(filePath);
    } else if (extensions.some(ext => file.endsWith(ext))) {
      processFile(filePath);
    }
  });
}

// 处理文件，删除console语句
function processFile(filePath) {
  try {
    let content = fs.readFileSync(filePath, 'utf8');
    
    // 删除独立行的console语句
    const originalLines = content.split('\n');
    const modifiedLines = originalLines.filter(line => {
      // 跳过包含注释中的console（虽然这种情况很少）
      if (line.includes('//') && line.indexOf('//') < line.indexOf('console.')) {
        return true;
      }
      // 删除独立行的console语句
      return !/^\s*console\.(log|debug|info|warn|error)\s*\([^)]*\)\s*;?\s*$/.test(line);
    });
    
    // 对于同一行的console语句（如在if语句后），保留其他代码
    let newContent = modifiedLines.join('\n');
    
    // 删除代码行末尾的console语句
    newContent = newContent.replace(/([^;])(\s*console\.(log|debug|info|warn|error)\s*\([^)]*\)\s*;)/g, '$1');
    
    if (content !== newContent) {
      fs.writeFileSync(filePath, newContent, 'utf8');
    }
  } catch (error) {
  }
}

// 开始处理
traverseDirectory(__dirname);